﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestPagoDAO
    {
        private PagoDAO pagoDao=new PagoDAO();
        [Test]
        public void TestCrear()
        {
            Mantenimiento Mantenimiento = new Mantenimiento();
            Mantenimiento.Codigo_Mantenimiento = 1;
            Tipo_Pago TipoPago = new Tipo_Pago();
            TipoPago.Codigo_Tipo_Pago=1;

            Pago PagoNuevo = new Pago();
            PagoNuevo.PagoCodigo = 1;
            PagoNuevo.oMantenimiento = Mantenimiento;
            PagoNuevo.FechaPago = DateTime.Now;
            PagoNuevo.CuentaCargo = "CC123456";
            PagoNuevo.CuentaAbono = "CA654321";
            PagoNuevo.NroTarjeta = "2022-1242-5332-2332";
            PagoNuevo.oTipoPago = TipoPago;
            PagoNuevo.Monto = 900;
            PagoNuevo.Observaciones = "Sin Observaciones";
            PagoNuevo.Estado = "Ok";

            // 2. Llamada al método del DAO a probar
            Pago PagoCreado = pagoDao.Crear(PagoNuevo);
            // 4. Implementar las validaciones
            Assert.NotNull(PagoCreado);
            Assert.AreEqual(PagoNuevo.PagoCodigo, PagoCreado.PagoCodigo);

        }
        [Test]
        public void TestObtener()
        {
            int _cod_Pago;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Pago = 1;
            Pago PagoConsulta = pagoDao.Obtener(_cod_Pago);

            // 4. Implementar las validaciones
            Assert.NotNull(PagoConsulta);
            Assert.AreEqual(PagoConsulta.PagoCodigo, _cod_Pago);
            Assert.IsNotNull(PagoConsulta.PagoCodigo);
        }
        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Pago oPago = new Pago();
            oPago.PagoCodigo = 1;
            // 2. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                pagoDao.Eliminar(oPago);
            });
            Assert.DoesNotThrow(delegate
            {
                pagoDao.Eliminar(oPago);
            });

            // 3. Implementar las validaciones
            Assert.NotNull(oPago);
            Assert.NotNull(oPago.PagoCodigo);

        }

    }
}